#ifndef __SQUENCESTACK_H
#define __SQUENCESTACK_H
#ifdef __cplusplus
extern "C"{
#endif
/* Includes ------------------------------------------------------------------*/
#include <stdio.h>//头文件
#include <stdlib.h>
#include <stddef.h>
/* Private types -------------------------------------------------------------*/
//私有结构体、枚举、共用体等
/*1、栈结构体
 *2、栈初始化
 *3、存放栈元素的顺序表（数组）扩容
 *4、释放栈内存
 *5、栈长度
 *6、增--入栈（进栈）
 *7、删--出栈（弹栈）
 *8、改
 *9、查
 *10、遍历栈
*/

/*1、栈结构体---顺序栈*/
typedef struct 
{
	int *data;//指向动态数组，动态数组存储栈元素
	size_t capacity;//栈容量
	size_t length;//栈长度--栈中存放的数据长度--相当于操作栈顶top
}Stack;

/* Private functions----------------------------------------------------------*/
//私有函数定义
/*2、初始化栈*/
int initStack(Stack *stack, size_t capacity);
/*3、存放栈元素的顺序表（数组）扩容*/
int resizeStack(Stack *stack,size_t newCapacity);
/*4、释放栈内存*/
int destroyStack(Stack *stack);
/*5、返回栈内元素个数*/
size_t getLength(const Stack *stack);
/*6、添加新元素*/
void push(Stack *stack, int element);
/*8、栈顶元素出栈并返回*/
int pop(Stack *stack);
/*10、遍历栈元素*/
void printStack(Stack *stack);


#ifdef __cplusplus
}
#endif
#endif



